import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace EdubaseSchoolClassApi {
  /** 学校班级主信息信息 */
  export interface SchoolClass {
    id: number; // 班级主键ID
    classCode?: string; // 班级编码（系统生成）
    className?: string; // 班级名称（如：一年级3班）
    classAlias?: string; // 班级别名
    period?: number; // 学段：1幼儿园 2小学 3初中 4高中 5中职 6高职 7本科 8研究生
    gradeId: number; // 年级id
    gradeCode: number; // 年级
    academicYear?: string; // 学年（如：2024-2025）
    semesterType: number; // 学期：1-第一学期 2-第二学期 3-暑期学期 4-寒假学期
    semesterId: number; // 学期id
    schoolId?: number; // 所属学校
    campusId: number; // 校区ID
    collegeId: number; // 学院id(大学)
    departmentId: number; // 系ID（大学）
    groupId: number; // 自定义组id
    facultyId: number; // 学部id（中职等）
    majorId: number; // 专业ID（大学）
    orgId: number; // 所属组织id
    buildingId: number; // 楼栋ID
    floor: number; // 楼层
    classroomId: number; // 教室ID（主要上课地点）
    classType: number; // 班级类型：1普通班 2实验班 3国际班 4重点班 5虚拟班（走班制）
    classCategory: number; // 班级类别：1行政班/2教学班（大学走班制）
    capacity: number; // 班级容量
    studentCount: number; // 实际学生人数
    advisorId: number; // 班主任/辅导员ID
    nurseId: number; // 保育员id，幼儿园
    careLevel: number; // 保育等级（幼儿园）
    assistantAdvisorId: number; // 副班主任id
    mentorId: number; // 学业导师id（大学）
    researchDirection: string; // 研究方向（大学）
    trainingMode: number; // 教学模式：1学校培养，2校企合作
    industryCoachId: number; // 企业导师id
    artScience: number; // 高考分类：1理科 2文科
    metadata: string; // 扩展字段
    status: number; // 状态：1在用 2已毕业 3已归档
    isGraduated: number; // 是否已毕业
    graduationDate: Dayjs | string; // 毕业日期
    sort: number; // 排序
    areaCode: number; // 行政区划
    previousClassId: number; // 前置id
    isBilingual: number; // 是否双语教学
  }
}

/** 查询学校班级主信息分页 */
export function getSchoolClassPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<EdubaseSchoolClassApi.SchoolClass>>(
    '/edu/base/school-class/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询学校班级主信息详情 */
export function getSchoolClass(id: number) {
  return requestClient.get<EdubaseSchoolClassApi.SchoolClass>(
    `/edu/base/school-class/get?id=${id}`,
  );
}

/** 新增学校班级主信息 */
export function createSchoolClass(data: EdubaseSchoolClassApi.SchoolClass) {
  return requestClient.post('/edu/base/school-class/create', data);
}

/** 修改学校班级主信息 */
export function updateSchoolClass(data: EdubaseSchoolClassApi.SchoolClass) {
  return requestClient.put('/edu/base/school-class/update', data);
}

/** 删除学校班级主信息 */
export function deleteSchoolClass(id: number) {
  return requestClient.delete(`/edu/base/school-class/delete?id=${id}`);
}

/** 批量删除学校班级主信息 */
export function deleteSchoolClassList(ids: number[]) {
  return requestClient.delete(
    `/edu/base/school-class/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出学校班级主信息 */
export function exportSchoolClass(params: any) {
  return requestClient.download('/edu/base/school-class/export-excel', {
    params,
  });
}
